$(function () {
    getMnueTree();
    initData();
    treeSearch("ss", "treeContent") // 绑定树搜索功能
})

//加载菜单树信息
function getMnueTree() {
    //加载菜单树，用户拥有的菜单权限
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: system + "/menu/queryMenuTree",
            dataType: "json",
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $('#treeContent').tree({
                    cascadeCheck: false,
                    checkbox: false,
                    lines: false,
                    data: data.data,
                    onClick: function (node) {
                    },  //双击事件
                    onDblClick: function (node) {
                        viewMenu();
                    }, onContextMenu: function (e, node) {
                        //显示上下文菜单:就是显示右键菜单
                        $("#0").hide();
                        if (node.menuLevel >= 3 || !isNull(node.url)) {
                            $("#0").show();
                        }
                        e.preventDefault();
                        $(this).tree('select', node.target);
                        $('#nav').menu('show', {
                            left: e.pageX,
                            top: e.pageY
                        });
                        $('#nav').menu({
                            onClick: function (item) { // 根据选择的id判断选中的是添加，修改，还是删除
                                if ("0" == item.id) { // 查看按钮信息
                                    editMenuRegion();
                                }
                                if ("2" == item.id) {
                                    addMenu();
                                }
                                if ("3" == item.id) {
                                    editMenu();
                                }
                                if ("4" == item.id) {
                                    delMenu();
                                }
                            }
                        })
                    },
                    formatter: function (node) {
                        //显示父节点含有子节点个数
                        var s = node.text;
                        if (node.children) {
                            s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
                        }
                        return s;
                    }
                })
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: system + "/menu/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listMenu = data.data.listMenu;
                var sysMenuType = data.data.sysMenuType;
                if (!isNull(sysMenuType)) {
                    $("#type").combobox("loadData", sysMenuType);
                }
                if (!isNull(listMenu)) {
                    listMenu.unshift({"text": "==无上级==", "id": '0', "pId": "", "iconCls": "icon-bricks"});
                    $("#parentId").combotree("loadData", listMenu);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 查看菜单信息弹出框
 */
function viewMenu() {
    var node = $("#treeContent").tree('getSelected');
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "查看菜单信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    getMenuInfo(node.id);
}


/**
 * 添加菜单信息弹出框
 */
function addMenu() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "新增菜单信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemMenu(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#type').combobox('selectedIndex', 0); //选中第一个
    var node = $("#treeContent").tree('getSelected');
    $('#parentId').combotree('setValue', node.id);
}

/**
 * 修改菜单信息
 */
function editMenu() {
    var node = $("#treeContent").tree('getSelected');
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "编辑菜单信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemMenu(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    getMenuInfo(node.id);
}

// 删除菜单信息
function delMenu() {
    var node = $("#treeContent").tree('getSelected');
    $.messager.confirm('系统提示', '确定要删除【' + node.text + '】菜单以及下级所有菜单包含按钮信息吗？', function (param) {
        if (!param) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/menu/delMenu",
                dataType: "json",
                data: {
                    id: node.id
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    getMnueTree();//刷新树
                    initData();
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}

//保存菜单信息
function saveItemMenu(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) { //验证表单信息
        return;
    }
    var url = system + "/menu/editMenu";
    if (1 == ftype) {
        url = system + "/menu/addMenu";
    }
    $.messager.confirm('系统提示', "确定保存菜单信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myform').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    getMnueTree();//刷新树
                    initData();
                    $.messager.show({title: '系统提示', msg: data.message});
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 点击树节点加载对应菜单信息
 * @param menuId
 */
function getMenuInfo(menuId) {
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: system + "/menu/queryMenuInfo",
            dataType: "json",
            data: {
                menuId: menuId
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $('#myform').form('load', data.data);//页面赋值
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}